#/usr/bin/python
#-*-<coding=UTF-8>-*-

"""
本例主要说明wxPython的标准流是如何控制的.
"""

import wx
import sys

class Frame(wx.Frame):
    #创建wxPython程序的两大基础之一:顶级窗口
    def __init__(self,parent,id,title):
	print "Frame __init__"
	wx.Frame.__init__(self,parent,id,title)
	
class App(wx.App):
    #创建wxPython程序的另外一个基础:应用程序类
    def __init__(self,redirect=True,filename=None):
	print "App __init__"
	wx.App.__init__(self,redirect,filename)

    def OnInit(self):
	"""
	在应用程序对象wx.App中创建wx.Frame的对象
	设置其属性显示为主窗口
	同时,定向输出流到标准错误输出
	"""
	print "OnInit"
	self.frame = Frame(parent=None,id=-1,title='Startup')
	self.frame.Show()
	self.SetTopWindow(self.frame)
	print >>sys.stderr,"A pretend error message"
	return True

    def OnExit(self):
	print "OnEXIT"

if __name__ == "__main__":
    """
    redirect设置为True,会自动创建标准输出窗口.
    stderr/stdout会重定向输出到该窗口.

    如果不要filename关键词,怎么还会报错,奇怪?
    app = App(redirect=True,"output")
    """
    app = App(redirect=True,filename="output")
    print "Before MainLoop"
    app.MainLoop()
    print "after MainLoop"
